package com.zjsru.plan2024.oneday;

/**
 * 2938. 区分黑球与白球
 * @Author: cookLee
 * @Date: 2024-06-06
 */
public class MinimumSteps {

    /**
     * 主
     * \
     * 输入：s = "101"
     * 输出：1
     * 解释：我们可以按以下方式将所有黑色球移到右侧：
     * - 交换 s[0] 和 s[1]，s = "011"。
     * 最开始，1 没有都在右侧，需要至少 1 步将其移到右侧。
     * \
     * 输入：s = "100"
     * 输出：2
     * 解释：我们可以按以下方式将所有黑色球移到右侧：
     * - 交换 s[0] 和 s[1]，s = "010"。
     * - 交换 s[1] 和 s[2]，s = "001"。
     * 可以证明所需的最小步数为 2 。
     * \
     * @param args args
     */
    public static void main(String[] args) {
        MinimumSteps minimumSteps = new MinimumSteps();
        String s = "1010";
        System.out.println(minimumSteps.minimumSteps(s));
    }

    /**
     * 最小步骤
     * 贪心
     * @param s s
     * @return long
     */
    public long minimumSteps(String s) {
        long ans = 0;
        int sum = 0;
        for (int i = 0; i < s.length(); i++) {
            if (s.charAt(i) == '1') {
                //需要交换的次数
                sum++;
            } else {
                ans += sum;
            }
        }
        return ans;
    }

}
